home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / pertab / perftab.bas < prev    next >
BASIC Source File  |  1995-09-07  |  5KB  |  187 lines

  1. ' =====================================
  2. ' PerfectTAB 1.0  (Freeware)
  3. ' =====================================
  4.  
  5. ' Copyright (C) 1994 by
  6.  
  7. ' bytes & letters,
  8. ' hilger software technology
  9. ' postfach 16 27
  10. ' 66716 Saarlouis, germany
  11.  
  12. ' written by Dirk Hilger
  13. '=======================================
  14.  
  15. Type tabbedDialogType
  16.      
  17.      Sheet_Distance      As Integer
  18.      Loop_Distance       As Integer
  19.      loop_sheet_distance As Integer
  20.      Active_Yadd         As Integer
  21.      loops_per_group     As Integer
  22.      active_bevelWidth   As Integer
  23.      inactive_bevelwidth As Integer
  24.      label_position      As Integer
  25.  
  26.      active_Sheet        As Integer
  27.      
  28.      init            As Integer
  29.      picHeight       As Integer
  30.      picwidth        As Integer
  31.      sheetheight     As Integer
  32.      sheetwidth      As Integer
  33.      count           As Integer
  34.      oldsy           As Integer
  35.      oldly           As Integer
  36.      actsy           As Integer
  37.      actly           As Integer
  38.      BevelWidth      As Integer
  39. End Type
  40.  
  41. Private Sub tab_getLocalPos (ByVal oWidth%, ByVal oHeight%, ByVal iWidth%, ByVal iHeight%, ByVal p%, putLeft%, putTop%)
  42.            If p% = 1 Or p% = 4 Or p% = 7 Then
  43.               putLeft% = (oWidth% - iWidth%) \ 2
  44.            ElseIf p% = 0 Or p% = 3 Or p% = 6 Then
  45.               putLeft% = 3
  46.            Else
  47.               putLeft% = oWidth% - iWidth% - 3
  48.            End If
  49.            
  50.            If p% < 3 Then
  51.                 putTop% = 3
  52.            ElseIf p% < 6 Then
  53.                 putTop% = (oHeight% - iHeight%) \ 2
  54.            Else
  55.                 putTop% = oHeight% - iHeight% - 3
  56.            End If
  57. End Sub
  58.  
  59. Sub Tab_SetActive (f As Form, s As tabbedDialogType, ByVal n%)
  60.     Dim i%, lx%, ly%, sx%, sy%, t%, oldscalemode%, lasttab%
  61.     Dim labelwidth%, labelheight%, p%
  62.     
  63.  
  64.     lasttab% = s.active_Sheet
  65.     On Local Error Resume Next
  66.     
  67.     oldscalemode% = f.ScaleMode
  68.     f.ScaleMode = 3
  69.  
  70.     If s.oldsy% Then
  71.        If s.init% = True And lasttab% = n% Then Exit Sub
  72.        If n% < 0 Then
  73.           n% = s.count%
  74.        ElseIf n% > s.count% Then
  75.           n% = 0
  76.        End If
  77.        
  78.        f.Tab_sheet(lasttab%).Enabled = False
  79.        f.Tab_sheet(lasttab%).BevelWidth = s.inactive_bevelwidth
  80.        f.Tab_Label(lasttab%).FontBold = False
  81.        f.Tab_sheet(lasttab%).Top = s.oldsy%
  82.        f.Tab_Loop(lasttab%).Top = s.oldly%
  83.        f.Tab_Loop(lasttab%).Picture = f.Tab_Loop_Picture(1).Picture
  84.     End If
  85.  
  86.     If s.init% = False Then
  87.        s.init% = True
  88.        s.count% = 100
  89.        If s.loops_per_group = 0 Then
  90.           s_loops_per_group = 100
  91.        End If
  92.        
  93.        
  94.        s.picHeight% = f.Tab_Loop_Picture(1).Height
  95.        s.picwidth% = f.Tab_Loop_Picture(1).Width - 2
  96.        
  97.        lx% = f.Tab_Loop(0).Left
  98.        ly% = f.Tab_Loop(0).Top
  99.        sx% = lx%
  100.        f.Tab_sheet(0).Left = sx%
  101.        sy% = ly% + s.picHeight% + s.loop_sheet_distance
  102.        f.Tab_sheet(0).Top = sy%
  103.        s.sheetwidth% = f.Tab_sheet(0).Width
  104.        s.sheetheight% = f.Tab_sheet(0).Height
  105.        
  106.        s.actsy% = sy% + s.Active_Yadd
  107.        s.actly% = ly% + s.Active_Yadd
  108.  
  109.  
  110.        For i% = 0 To s.count%
  111.            
  112.            f.Tab_Loop(i%).ScaleMode = 3
  113.            If Err Then
  114.               s.count% = i% - 1
  115.               Exit For
  116.            End If
  117.  
  118.            f.Tab_Loop(i%).BorderStyle = 0
  119.            f.Tab_Loop(i%).AutoSize = True
  120.            
  121.            tab_getLocalPos s.picwidth, s.picHeight, f.Tab_Label(i%).Width, f.Tab_Label(i%).Height, s.label_position, l%, t%
  122.            f.Tab_Label(i%).Left = l%
  123.            f.Tab_Label(i%).Top = t%
  124.            
  125.            If i% Then
  126.               f.Tab_Loop(i%).Left = lx%
  127.               f.Tab_Loop(i%).Top = ly%
  128.               f.Tab_sheet(i%).Left = sx%
  129.               f.Tab_sheet(i%).Top = sy%
  130.               f.Tab_sheet(i%).Width = s.sheetwidth%
  131.               f.Tab_sheet(i%).Height = s.sheetheight%
  132.            End If
  133.            
  134.            If i% <> n% Then
  135.               f.Tab_Loop(i%).Picture = f.Tab_Loop_Picture(1).Picture
  136.               f.Tab_sheet(i%).BevelWidth = s.inactive_bevelwidth
  137.               f.Tab_sheet(i%).Enabled = False
  138.               f.Tab_Label(i%).FontBold = False
  139.            End If
  140.            lx% = lx% + s.picwidth% + s.Loop_Distance
  141.            ly% = ly% + s.Sheet_Distance
  142.            sx% = sx% - s.Sheet_Distance
  143.            sy% = sy% + s.Sheet_Distance
  144.            If (i% + 1) Mod s.loops_per_group = 0 Then
  145.               lx% = sx%
  146.            End If
  147.               
  148.        Next
  149.     End If
  150.  
  151.     GoSub tab_setSheet_stack
  152.     lasttab% = n%
  153.  
  154.     
  155.     s.oldsy% = f.Tab_sheet(lasttab%).Top
  156.     s.oldly% = f.Tab_Loop(lasttab%).Top
  157.     f.Tab_sheet(lasttab%).Top = s.actsy%
  158.     f.Tab_Loop(lasttab%).Top = s.actly%
  159.     
  160.     
  161.     f.Tab_sheet(lasttab%).Enabled = True
  162.     f.Tab_sheet(lasttab%).BevelWidth = s.active_bevelWidth
  163.     f.Tab_Label(lasttab%).FontBold = True
  164.     
  165.     f.Tab_Loop(lasttab%).Picture = f.Tab_Loop_Picture(0).Picture
  166.     f.Tab_sheet(lasttab%).ZOrder 0
  167.     f.Tab_Loop(lasttab%).ZOrder 0
  168.     ScaleMode = oldscalemode%
  169.     
  170.     
  171.     s.active_Sheet = lasttab%
  172.     Exit Sub
  173.  
  174.  
  175. tab_setSheet_stack:
  176.     For i% = 0 To s.count%
  177.         If i% <> n% Then
  178.            f.Tab_Loop(i%).ZOrder 1
  179.            f.Tab_sheet(i%).ZOrder 1
  180.         End If
  181.         f.Tab_Label(i%).BorderStyle = 0
  182.     Next
  183.     Return
  184.     
  185. End Sub
  186.  
  187.